#ifndef __BMS_MONITOR_H__
#define __BMS_MONITOR_H__

#include <stdbool.h>
#include "bms_type.h"

/* 辅助电芯排序的结构体 */
typedef struct
{
	float CellVoltage;                                  // 电芯电压
	uint32_t CellNumber;                                // 电芯的编号
}BMS_CellDataTypedef;


/* 监控获得信息的存放的位置 */
typedef struct
{
	float CellTemp[BMS_TEMP_MAX];                       // 采样温度, 温度数据会从小到大排序
	float BatteryVoltage;                               // 电池总电压
	float BatteryCurrent;                               // 电池组电流
	BMS_CellDataTypedef CellData[BMS_CELL_MAX];         // 单体电压, 排序后
	float CellVoltage[BMS_CELL_MAX];                    // 单体电压, 未排序
	uint32_t CellTempEffectiveNumber;                   // 有效温度的数量, 避免外部 NTC 损坏
	bool isChMosOpen;
	bool isDisMosOpen;
}BMS_MonitorDataTypedef;


/* extern */
// 采集数据存放地方
extern BMS_MonitorDataTypedef BMS_MonitorData;

extern void BMS_MonitorInit( void );
extern void BMS_MonitorHwCurrent( void );

#endif /* __BMS_MONITOR_H__ */
